﻿/***********************************************
***************** 注册登录验证 ******************
*************** Write by Gibil *****************
***********************************************/
//提示
var Tips = {
    //显示错误提示
    ShowError: function (id, info) {
        $('#' + id).show().removeClass('success').addClass('error').html(info);
    },
    //显示正确提示
    ShowRight: function (id, info) {
        $('#' + id).show().removeClass('error').addClass('success').html(info || '&nbsp;');
    },
    //清除错误提示
    ClearError: function (id) {
        $('#' + id).removeClass('error').html('');
    }
}

//商家注册
var Region = {
    //密码验证
    PwdValidate: function () {

		if ($('#txtPwd').size() == 0)
			return true;

        var passWord = $.trim($('#txtPwd').val());
        var regPwd = /^[\W\w]{6,20}$/; //---/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,22}$/;//数字、字母以及特殊字符
        var pLength = passWord.length;
        if (pLength == 0) {
            Tips.ShowError('spPwd', '请输入登录密码');
            return false;
        }
        else if (pLength > 20 || pLength < 6) {
            Tips.ShowError('spPwd', '长度不对');
            return false;
        }
        else {
            if (!regPwd.test(passWord)) {
                Tips.ShowError('spPwd', '格式不对');
                return false;
            }
            else {
                Tips.ShowRight('spPwd');
                return true;
            }
        }
    },
    //确认密码
    ConfirmPwd: function () {

		if ($('#txtConfirmPwd').size() == 0)
			return true;

        var passWord = $.trim($('#txtConfirmPwd').val());
        var pLength = passWord.length;
        if (pLength == 0) {
            Tips.ShowError('spConfirmPwd', '请输入确认密码');
            return false;
        }

        if ($.trim($('#txtConfirmPwd').val()) != $.trim($('#txtPwd').val())) {
            Tips.ShowError('spConfirmPwd', '密码不一致');
            return false;
        } else {
            Tips.ShowRight('spConfirmPwd');
        }
        return true;
    },
    //用户名验证
    NameValidate: function () {
        var regEmail = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
        var email = $.trim($('#txtName').val());
        if (email.length < 1) {
            Tips.ShowError('spName', '请输入邮箱');
            $('#txtName').attr('right', 0);
            return false;
        }

        if (!regEmail.test(email)) {
            Tips.ShowError('spName', '邮箱格式不对');
            $('#txtName').attr('right', 0);
            return false;
        }
        //lastvalue属性为最后一次输入值,判断与当前输入值是否一致,一致时不进行异步验证
        if (!$('#txtName').attr('lastvalue') || $('#txtName').attr('lastvalue') != $.trim($('#txtName').val())) {
            //验证是否被使用
            $.ajax({
                type: 'POST',
                url: '/Ajax/WebAjax.aspx',
                data: { "act": "CompanyIsExist", "name": $("#txtName").val() },
                dataType: 'text',
                cache: false,
                success: function (msg) {
                    if (msg == '1') {
                        Tips.ShowError('spName', '该邮箱已被注册');
                        $('#txtName').attr('right', 0);
                        return false;
                    }
                    else if (msg == '0') {
                        Tips.ShowRight('spName');
                        $('#txtName').attr('right', 1); //置成功标志
                    }
                }
            });
        }
        $('#txtName').attr('lastvalue', $.trim($('#txtName').val())); //保存最后一次输入值
        return true;
    },
    //验证码验证
    ImgCodeValidate: function () {
        if ($.trim($('#txtCode').val()).length == 0) {
            Tips.ShowError('spCode', '请输入验证码');
            return false;
        }
        else if ($.trim($('#txtCode').val()).length != 4) {
            Tips.ShowError('spCode', '验证码长度不对');
            return false;
        }
        else {
            Tips.ClearError('spCode');
            return true;
        }
    },
    //验证企业名称
    ComNameValidate: function () {
        if ($.trim($('#txtCompanyName').val()).length == 0) {
            Tips.ShowError('spCompanyName', '请输入企业名称');
            return false;
        }
        else {
            Tips.ClearError('spCompanyName');
            return true;
        }
    },
    //验证联系人
    LinkmanValidate: function () {
        if ($.trim($('#txtLinkman').val()).length == 0) {
            Tips.ShowError('spLinkman', '请输入联系人');
            return false;
        }
        else {
            Tips.ClearError('spLinkman');
            return true;
        }
    },
    //验证联系人手机
    MobileValidate: function () {
        var regx = /^(13|15|18|013|015|018)\d{9}$/;
        var str = $.trim($('#txtMobile').val());
        if (str.length == 0) {
            Tips.ShowError('spMobile', '请填写手机号码');
            return false;
        }
        else if (regx.exec(str) == null) {
            Tips.ShowError('spMobile', '请填写有效的手机号码');
            return false;
        }
        else {
            Tips.ClearError('spMobile');
            return true;
        }
    },
    //表单验证
    CheckSave: function () {
        var flag = true;
        if (!Region.ImgCodeValidate())
            flag = false;
        if (!Region.PwdValidate())
            flag = false;
        if (!Region.ConfirmPwd())
            flag = false;
        if (!Region.ComNameValidate())
            flag = false;
        if (!Region.LinkmanValidate())
            flag = false;
        if (!Region.MobileValidate())
            flag = false;

        //为了避免重复ajax请求进行验证,采用right属性来解决,1为通过验证
        if ($.trim($('#txtName').val()).length < 1) {//防止不填写邮箱
            Tips.ShowError('spName', '请输入邮箱');
            $('#txtName').attr('right', 0);
            flag = false;
        } else if ($('#txtName').attr('right') == '0') {
            flag = false;
        } else if ($('#txtName').attr('right') == 'undefined') {
            if (!Region.NameValidate())
                flag = false;
        }

        return CheckSubmit.Submit(flag);
    }
}

//登录
var Login = {
    //用户名验证
    NameValidate: function () {
        var regEmail = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
        var email = $.trim($('#txtName').val());
        if (email.length < 1) {
            Tips.ShowError('spName', '请输入用户名');
            return false;
        }
        if (!regEmail.test(email)) {
            Tips.ShowError('spName', '邮箱格式不对');
            return false;
        }

        Tips.ClearError('spName');
        return true;
    },
    //密码验证
    PwdValidate: function () {
        var passWord = $.trim($('#txtPwd').val());
        var regPwd = /^[\W\w]{6,20}$/; //---/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,22}$/;//数字、字母以及特殊字符
        var pLength = passWord.length;
        if (pLength == 0) {
            Tips.ShowError('spPwd', '请输入登录密码');
            return false;
        }
        else if (pLength > 20 || pLength < 6) {
            Tips.ShowError('spPwd', '长度不对');
            return false;
        }
        else {
            if (!regPwd.test(passWord)) {
                Tips.ShowError('spPwd', '格式不对');
                return false;
            }
            else {
                Tips.ClearError('spPwd');
                return true;
            }
        }
    },
    //验证码验证
    ImgCodeValidate: function () {
        if ($.trim($('#txtCode').val()).length == 0) {
            Tips.ShowError('spCode', '请输入验证码');
            return false;
        }
        else if ($.trim($('#txtCode').val()).length != 4) {
            Tips.ShowError('spCode', '验证码长度不对');
            return false;
        }
        else {
            Tips.ClearError('spCode');
            return true;
        }
    },
    //表单验证
    CheckSave: function () {
        var flag = true;
        if (!Login.NameValidate())
            flag = false;
        if (!Login.ImgCodeValidate())
            flag = false;
        if (!Login.PwdValidate())
            flag = false;
        return CheckSubmit.Submit(flag);
    }
}

//找回密码
var Forgot = {
    //用户名验证
    NameValidate: function () {
        var regEmail = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
        var email = $.trim($('#txtName').val());
        if (email.length < 1) {
            Tips.ShowError('spName', '请输入用户名');
            return false;
        }
        if (!regEmail.test(email)) {
            Tips.ShowError('spName', '邮箱格式不对');
            return false;
        }

        Tips.ClearError('spName');
        return true;
    },
    //验证码验证
    ImgCodeValidate: function () {
        if ($.trim($('#txtCode').val()).length == 0) {
            Tips.ShowError('spCode', '请输入验证码');
            return false;
        }
        else if ($.trim($('#txtCode').val()).length != 4) {
            Tips.ShowError('spCode', '验证码长度不对');
            return false;
        }
        else {
            Tips.ClearError('spCode');
            return true;
        }
    },
    //表单验证
    CheckSave: function () {
        var flag = true;
        if (!Login.NameValidate())
            flag = false;
        if (!Login.ImgCodeValidate())
            flag = false;
        return CheckSubmit.Submit(flag);
    }
}

//重置密码
var SetPassword = {
    //密码验证
    PwdValidate: function () {
        var passWord = $.trim($('#txtPwd').val());
        var regPwd = /^[\W\w]{6,20}$/; //---/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,22}$/;//数字、字母以及特殊字符
        var pLength = passWord.length;
        if (pLength == 0) {
            Tips.ShowError('spPwd', '请输入新密码');
            return false;
        }
        else if (pLength > 20 || pLength < 6) {
            Tips.ShowError('spPwd', '长度不对');
            return false;
        }
        else {
            if (!regPwd.test(passWord)) {
                Tips.ShowError('spPwd', '格式不对');
                return false;
            }
            else {
                Tips.ShowRight('spPwd');
                return true;
            }
        }
    },
    //确认密码
    ConfirmPwd: function () {
        var passWord = $.trim($('#txtConfirmPwd').val());
        var pLength = passWord.length;
        if (pLength == 0) {
            Tips.ShowError('spConfirmPwd', '请输入确认密码');
            return false;
        }

        if ($.trim($('#txtConfirmPwd').val()) != $.trim($('#txtPwd').val())) {
            Tips.ShowError('spConfirmPwd', '密码不一致');
            return false;
        } else {
            Tips.ShowRight('spConfirmPwd');
        }
        return true;
    },
    //表单验证
    CheckSave: function () {
        var flag = true;
        if (!Region.PwdValidate())
            flag = false;
        if (!Region.ConfirmPwd())
            flag = false;

        return CheckSubmit.Submit(flag);
    }
}

//防止重复提交表单,注意此方法只对重复提交验证,不对表单验证(请独立验证)
//使用示例：return CheckSubmit.Submit(true);
var CheckSubmit = {
    //提交次数统计
    SubmitCount: 0,
    //初始化统计量避免操作成功后无法继续操作
    InitCount: function () {
        SubmitCount = 0;
    },
    //验证
    Check: function () {
        if (CheckSubmit.SubmitCount > 0) {//已提交
            return false;
        }
        else {
            CheckSubmit.SubmitCount += 1;
            return true;
        }
    },
    //确认提交,表单验证在外部,此处只做重复验证
    Submit: function (isSubmit) {//isSubmit为bool参数,表示表单是否已通过验证
        if (isSubmit) {//信息验证通过再验证是否重复提交
            if (!CheckSubmit.Check())//防止重复提交表单
                return false;
            else
                return true;
        }
        else {
            CheckSubmit.SubmitCount = 0; //没通过必须将提交次数初始化，避免通过后无法提交
            return false;
        }
    }
}
